package com.niiwoo.civet.account.dto.request;

import com.niiwoo.civet.account.dto.common.MoneyTotalDTO;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 放款成功记账请求DTO
 */
@Getter
@Setter
public class LendSuccessAccountingRequestDTO  implements Serializable {
    private static final long serialVersionUID = 6089895403817617927L;

    /**
     * 标的ID
     */
    private Long projectId;

    /**
     * 标的来源
     */
    private Byte fromSource;

    /**
     * 业务类型(对应t_tc_project表type字段)
     */
    private Byte projectType;

    /**
     * 借款人userId
     */
    private String borrowerUserId;

    /**
     * 借款人手机号码
     */
    private String borrowMobile;

    /**
     * 借款人accountId
     */
    private Long borrowerAccountId;

    /**
     * 借款人金额
     */
    private BigDecimal borrowAmount;

    /**
     * 平台管理费
     */
    private BigDecimal managementFee;

    /**
     * 平台管理费收取方accountId
     */
    private Long managemenAccountId;

    /**
     * 担保服务费
     */
    private BigDecimal guaranteeFee;

    /**
     * 担保服务费收取方accountId
     */
    private Long guaranteeAccountId;

    /**
     * 咨询服务费
     */
    private BigDecimal consultingFee;

    /**
     * 咨询服务费收取方accountId
     */
    private Long consultingAccountId;

    /**
     * 前置咨询服务费
     */
    private BigDecimal beforeSeekAdviceServiceFee;

    /**
     * 前置咨询服务费收取方accountId
     */
    private Long beforeSeekAdviceServiceAccountId;

    private String requestNo;

    /**
     * 借款累计(借款人借款金额累计)
     */
    private MoneyTotalDTO borrowTotal;

    /**
     * 投资累计(投资人投资金额累计)
     */
    private List<MoneyTotalDTO> investTotal;

    /**
     * 投资冻结(投资人投资冻结金额解冻)
     */
    private List<MoneyTotalDTO> investFreeze;

    /**
     * 待收本息(投资人待收本息)
     */
    private List<MoneyTotalDTO> dueInCapitalInterest;

    /**
     * 投资成功账单
     */
    private List<InvestSuccessBill> investSuccessBillList;

    /**
     * 是否被打包的标的
     */
    private Boolean isPackagedProject;

    /**
     * 投资成功账单
     */
    @Getter
    @Setter
    public static class InvestSuccessBill implements Serializable {

        private static final long serialVersionUID = -8381970818020578352L;

        private String userId;

        private Long investOrderId;
    }
}
